#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <math.h>
#include "MQTTClient.h"
#include "cJSON.h"
#include "shmem.h"
#include "list.h"
#include <modbus.h>
#include <sys/ipc.h>
#include "msg_queue_peer.h"
#include <errno.h>
#include <time.h>
#include <sqlite3.h>



// 定义消息结构体
typedef struct {
    long mtype;             // 消息类型（必须大于0）
    char mtext[128];        // 消息内容
} Message;

// 消息读取函数
void read_messages() {
    key_t key = ftok("/tmp", 'a');  // 生成唯一的消息队列键值
    if (key == -1) {
        perror("ftok failed");
        return;
    }

    // 获取消息队列ID
    int msgid = msgget(key, 0666 | IPC_CREAT);
    if (msgid == -1) {
        perror("msgget failed");
        return;
    }

    printf("等待消息...\n");

    // 循环读取消息
    while (1) {
        Message msg;
        // 接收消息（阻塞模式）
        if (msgrcv(msgid, &msg, sizeof(msg.mtext), 1, 0) == -1) {
            perror("msgrcv failed");
            break;
        }

        // 打印接收到的消息
        printf("收到消息 (类型 %ld): %s\n", msg.mtype, msg.mtext);
    }
}

int main() {
    read_messages();
    return 0;
}